{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "axis_aligned_ex.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/tancik/fourier-feature-networks/blob/master/Experiments/axis_aligned_ex.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TZzNChQ-jVgp",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import jax\n",
        "from jax import random, grad, jit, vmap, lax\n",
        "from jax.config import config\n",
        "import jax.numpy as np\n",
        "from jax.experimental import optimizers, stax\n",
        "from jax.ops import index, index_update\n",
        "\n",
        "import matplotlib.pyplot as plt\n",
        "import os\n",
        "\n",
        "import string\n",
        "\n",
        "from tqdm.notebook import tqdm as tqdm\n",
        "\n",
        "import numpy as onp\n",
        "\n",
        "import scipy as sp\n",
        "\n",
        "## Random seed\n",
        "rand_key = random.PRNGKey(10)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "vGr6wrQ7ov-2",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "RES = 512\n",
        "num_thetas = 17\n",
        "num_rads = 4\n",
        "\n",
        "thetas = np.linspace(0.0, np.pi, num_thetas)\n",
        "rads = np.linspace(5.0, 20.0, num_rads)\n",
        "\n",
        "def make_sinusoid_dataset(thetas, rads, RES):\n",
        "\n",
        "  window = sp.signal.windows.hamming(RES)\n",
        "  window_2d = np.outer(window, window)\n",
        "\n",
        "  dataset = []\n",
        "  for theta in thetas:\n",
        "    rad_list = []\n",
        "    for rad in rads:\n",
        "      a = np.round(np.sin(theta)*rad)\n",
        "      b = np.round(np.cos(theta)*rad)\n",
        "      # y, x = np.meshgrid((np.arange(RES)-(RES//2))/RES, (np.arange(RES)-(RES//2))/RES, indexing='ij')\n",
        "      y, x = np.meshgrid(np.linspace(0.0, 1.0, RES, endpoint=False), np.linspace(0.0, 1.0, RES, endpoint=False))\n",
        "      tmp = np.cos(2.0*np.pi*a*x + 2.0*np.pi*b*y)[:,:,None]\n",
        "      # rand_weight = onp.random.random()\n",
        "      rad_list.append(tmp)\n",
        "      # rad_list.append(sp.misc.face()[:RES,:RES,1:2]/255.0)\n",
        "    dataset.append(rad_list)\n",
        "    # dataset.append([np.mean(np.stack(rad_list, axis=0), axis=0)])\n",
        "  return dataset\n",
        "\n",
        "dataset = make_sinusoid_dataset(thetas, rads, RES)\n",
        "\n",
        "x1 = np.linspace(0, 1, RES//2+1)[:-1]\n",
        "x_train = np.stack(np.meshgrid(x1,x1), axis=-1)\n",
        "\n",
        "x1_t = np.linspace(0, 1, RES+1)[:-1]\n",
        "x_test = np.stack(np.meshgrid(x1_t,x1_t), axis=-1)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4GlinulWj-un",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def make_network(num_layers, num_channels):\n",
        "  layers = []\n",
        "  for i in range(num_layers-1):\n",
        "      layers.append(stax.Dense(num_channels))\n",
        "      layers.append(stax.Relu)\n",
        "  layers.append(stax.Dense(1))\n",
        "  layers.append(stax.Tanh)\n",
        "  return stax.serial(*layers)\n",
        "\n",
        "model_loss = jit(lambda params, x, y: .5 * np.mean((apply_fn(params, x) - y) ** 2))\n",
        "model_psnr = jit(lambda params, x, y: -10 * np.log10(2.*model_loss(params, x, y)))\n",
        "model_grad_loss = jit(lambda params, x, y: jax.grad(model_loss)(params, x, y))\n",
        "\n",
        "def train_model(key, lr, iters, train_data, test_data):\n",
        "    opt_init, opt_update, get_params = optimizers.adam(lr)\n",
        "    opt_update = jit(opt_update)\n",
        "\n",
        "    _, params = init_fn(key, (-1, train_data[0].shape[-1]))\n",
        "    opt_state = opt_init(params)\n",
        "\n",
        "    train_psnrs = []\n",
        "    test_psnrs = []\n",
        "    xs = []\n",
        "    for i in tqdm(range(iters), desc='train iter', leave=False):\n",
        "        opt_state = opt_update(i, model_grad_loss(get_params(opt_state), *train_data), opt_state)\n",
        "        if i % 25 == 0:\n",
        "            train_psnr = model_psnr(get_params(opt_state), *train_data)\n",
        "            test_psnr = model_psnr(get_params(opt_state), *test_data)\n",
        "            train_psnrs.append(train_psnr)\n",
        "            test_psnrs.append(test_psnr)\n",
        "            xs.append(i)\n",
        "    results = {\n",
        "        # 'state': get_params(opt_state),\n",
        "        'train_psnrs': train_psnrs,\n",
        "        'test_psnrs': test_psnrs,\n",
        "        'pred' : apply_fn(get_params(opt_state), train_data[0])\n",
        "    }\n",
        "    return results['test_psnrs'][-1]"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "t5K8dl975kmx",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "input_encoder = lambda x, a, b: np.concatenate([a * np.sin((2.*np.pi*x) @ b.T), \n",
        "                                                a * np.cos((2.*np.pi*x) @ b.T)], axis=-1)\n",
        "\n",
        "def compute_new_posenc(mres):\n",
        "  bvals = 2.**np.linspace(0,mres,embedding_size//2) - 1.\n",
        "  bvals = np.stack([bvals, np.zeros_like(bvals)], -1)\n",
        "  bvals = np.concatenate([bvals, np.roll(bvals, 1, axis=-1)], 0) + 0\n",
        "  avals = np.ones((bvals.shape[0])) \n",
        "  return avals, bvals\n",
        "\n",
        "def compute_gaussian(scale):\n",
        "  bvals = random.normal(rand_key, (embedding_size, 2))*scale\n",
        "  avals = np.ones((bvals.shape[0])) \n",
        "  return avals, bvals"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "965mnEuk7BqY",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 530
        },
        "outputId": "a71a6413-3cb8-42ed-ba07-f7705635a622"
      },
      "source": [
        "network_depth =  2#@param\n",
        "network_width = 256 #@param\n",
        "lr =  1e-3#@param\n",
        "training_steps =  500#@param\n",
        "\n",
        "embedding_size = 256 #@param\n",
        "\n",
        "posenc_mres = 5\n",
        "gaussian_scale = 10\n",
        "\n",
        "init_fn, apply_fn = make_network(network_depth, network_width)\n",
        "\n",
        "avals, bvals = compute_new_posenc(posenc_mres)\n",
        "plt.figure()\n",
        "plt.scatter(bvals[:,0], bvals[:,1])\n",
        "\n",
        "avals, bvals = compute_gaussian(gaussian_scale)\n",
        "plt.figure()\n",
        "plt.scatter(bvals[:,0], bvals[:,1])"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7f18d9b2a700>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 7
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kBwQ_UPyaoYn",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "avals, bvals = compute_new_posenc(posenc_mres)\n",
        "posenc_results = []\n",
        "for t in tqdm(range(len(dataset)), desc=f'Angle', leave=False):\n",
        "    theta = thetas[t]\n",
        "    theta_results = []\n",
        "    for r in tqdm(range(len(dataset[0])), desc=f'Radius', leave=False):\n",
        "        rad = rads[r]\n",
        "        y_train = dataset[t][r]\n",
        "        train_data = (input_encoder(x_train, avals, bvals), y_train[::2,::2,:])\n",
        "        test_data = (input_encoder(x_test, avals, bvals), y_train)\n",
        "        theta_results.append(train_model(lr, training_steps, train_data, test_data))\n",
        "    posenc_results.append(theta_results)\n",
        "\n",
        "avals, bvals = compute_gaussian(gaussian_scale)\n",
        "gaussian_results = []\n",
        "for t in tqdm(range(len(dataset)), desc=f'Angle', leave=False):\n",
        "    theta = thetas[t]\n",
        "    theta_results = []\n",
        "    for r in tqdm(range(len(dataset[0])), desc=f'Radius', leave=False):\n",
        "        rad = rads[r]\n",
        "        y_train = dataset[t][r]\n",
        "        train_data = (input_encoder(x_train, avals, bvals), y_train[::2,::2,:])\n",
        "        test_data = (input_encoder(x_test, avals, bvals), y_train)\n",
        "        theta_results.append(train_model(lr, training_steps, train_data, test_data))\n",
        "    gaussian_results.append(theta_results)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "A-EnzhaeA-zE",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "posenc_psnrs = []\n",
        "gaussian_psnrs = []\n",
        "for i in range(len(posenc_results)):\n",
        "  posenc_psnr_ang = []\n",
        "  gaussian_psnr_ang = []\n",
        "  for j in range(len(posenc_results[0])):\n",
        "    posenc_psnr_ang.append(posenc_results[i][j]['test_psnrs'][-1])\n",
        "    gaussian_psnr_ang.append(gaussian_results[i][j]['test_psnrs'][-1])\n",
        "  posenc_psnrs.append(onp.mean(posenc_psnr_ang))\n",
        "  gaussian_psnrs.append(onp.mean(gaussian_psnr_ang))"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ywiznHEPV03c",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 282
        },
        "outputId": "de1cae07-96ad-4622-a2f6-27dea6de0ea6"
      },
      "source": [
        "plt.figure()\n",
        "plt.plot(posenc_psnrs, label='posenc') \n",
        "plt.plot(gaussian_psnrs, label='gaussian')\n",
        "plt.legend()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.legend.Legend at 0x7f8afa72aa20>"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 19
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rADHaaUA62Fn",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def compute_gaussian(key, scale):\n",
        "  bvals = random.normal(key, (embedding_size, 2))*scale\n",
        "  avals = np.ones((bvals.shape[0])) \n",
        "  return avals, bvals\n",
        "\n",
        "numruns = 4\n",
        "\n",
        "train_fn = lambda ensemble_key, train_data, test_data: train_model(ensemble_key, lr, training_steps, train_data, test_data)\n",
        "\n",
        "def train_fn_p(ensemble_key, x_train, x_test, y_train):\n",
        "  avals, bvals = compute_new_posenc(posenc_mres)\n",
        "  train_data = (input_encoder(x_train, avals, bvals), y_train[::2,::2,:])\n",
        "  test_data = (input_encoder(x_test, avals, bvals), y_train)\n",
        "  return train_fn(ensemble_key, train_data, test_data)\n",
        "\n",
        "def train_fn_g(ensemble_key, x_train, x_test, y_train):\n",
        "  avals, bvals = compute_gaussian(ensemble_key, gaussian_scale)\n",
        "  train_data = (input_encoder(x_train, avals, bvals), y_train[::2,::2,:])\n",
        "  test_data = (input_encoder(x_test, avals, bvals), y_train)\n",
        "  return train_fn(ensemble_key, train_data, test_data)\n",
        "\n",
        "train_fn_p = vmap(train_fn_p, in_axes=(0, None, None, None))\n",
        "train_fn_g = vmap(train_fn_g, in_axes=(0, None, None, None))\n",
        "\n",
        "rand_key, *ensemble_key = random.split(rand_key, 1+numruns)\n",
        "ensemble_key = np.array(ensemble_key)\n",
        "\n",
        "posenc_mres = 5\n",
        "gaussian_scale = 10\n",
        "\n",
        "# avals, bvals = compute_new_posenc(posenc_mres)\n",
        "posenc_results = []\n",
        "for t in tqdm(range(len(dataset)), desc='Angle', leave=False):\n",
        "    theta = thetas[t]\n",
        "    theta_results = []\n",
        "    for r in tqdm(range(len(dataset[0])), desc='Radius', leave=False):\n",
        "        rad = rads[r]\n",
        "        y_train = dataset[t][r]\n",
        "        # train_data = (input_encoder(x_train, avals, bvals), y_train[::2,::2,:])\n",
        "        # test_data = (input_encoder(x_test, avals, bvals), y_train)\n",
        "        # theta_results.append(train_fn_p(ensemble_key, train_data, test_data))\n",
        "        theta_results.append(train_fn_p(ensemble_key, x_train, x_test, y_train))\n",
        "    posenc_results.append(theta_results)\n",
        "\n",
        "# avals, bvals = compute_gaussian(gaussian_scale)\n",
        "gaussian_results = []\n",
        "for t in tqdm(range(len(dataset)), desc='Angle', leave=False):\n",
        "    theta = thetas[t]\n",
        "    theta_results = []\n",
        "    for r in tqdm(range(len(dataset[0])), desc='Radius', leave=False):\n",
        "        rad = rads[r]\n",
        "        y_train = dataset[t][r]\n",
        "        # train_data = (input_encoder(x_train, avals, bvals), y_train[::2,::2,:])\n",
        "        # test_data = (input_encoder(x_test, avals, bvals), y_train)\n",
        "        # theta_results.append(train_fn(ensemble_key, train_data, test_data))\n",
        "        theta_results.append(train_fn_g(ensemble_key, x_train, x_test, y_train))\n",
        "    gaussian_results.append(theta_results)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "U3iUQ2nTVB_L",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "posenc_array = onp.array(posenc_results)\n",
        "gaussian_array = onp.array(gaussian_results)"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DZKtKrTbO9Q-",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 310
        },
        "outputId": "c31d249f-2782-4323-bd16-5f8e68134135"
      },
      "source": [
        "import matplotlib\n",
        "import matplotlib.pylab as pylab\n",
        "params = {'legend.fontsize': 18,\n",
        "         'axes.labelsize': 22,\n",
        "         'axes.titlesize': 22,\n",
        "         'xtick.labelsize': 18,\n",
        "         'ytick.labelsize':18}\n",
        "pylab.rcParams.update(params)\n",
        "\n",
        "\n",
        "matplotlib.rcParams['mathtext.fontset'] = 'cm'\n",
        "matplotlib.rcParams['mathtext.rm'] = 'serif'\n",
        "\n",
        "plt.rcParams[\"font.family\"] = \"cmr10\"\n",
        "\n",
        "colors_k = np.array([[0.8872, 0.4281, 0.1875],\n",
        "    # [0.8136, 0.6844, 0.0696],\n",
        "    [0.2634, 0.6634, 0.4134],\n",
        "    # [0.0943, 0.5937, 0.8793],\n",
        "    [0.3936, 0.2946, 0.6330],\n",
        "    [0.7123, 0.2705, 0.3795]])\n",
        "linewidth = 2\n",
        "\n",
        "fig = plt.figure(figsize=(8,4))\n",
        "ax = plt.gca()\n",
        "\n",
        "meanvals_p = np.mean(posenc_array, axis=(1,2))\n",
        "stdvals_p = np.std(np.mean(posenc_array, axis=1), axis=1)\n",
        "\n",
        "meanvals_g = np.mean(gaussian_array, axis=(1,2))\n",
        "stdvals_g = np.std(np.mean(gaussian_array, axis=1), axis=1)\n",
        "\n",
        "plt.plot(thetas, meanvals_g, color=colors_k[0], label='Gaussian RFF')\n",
        "plt.fill_between(thetas, meanvals_g-stdvals_g, meanvals_g+stdvals_g, color=colors_k[0], alpha=.1)\n",
        "\n",
        "plt.plot(thetas, meanvals_p, color=colors_k[1], label='Positional encoding')\n",
        "plt.fill_between(thetas, meanvals_p-stdvals_p, meanvals_p+stdvals_p, color=colors_k[1], alpha=.1)\n",
        "\n",
        "plt.autoscale(enable=True, axis='y', tight=True)\n",
        "plt.xticks([0.0, np.pi/4., np.pi/2., 3.*np.pi/4., np.pi], \n",
        "           ['0','$\\pi/4$','$\\pi/2$', '$3\\pi/4$', '$\\pi$'])\n",
        "# ax.set_yticklabels([fr'${t:g}$' for t in ytick])\n",
        "ax.set_ylim([29,34])\n",
        "plt.xlabel('Target sinusoid angle (radians)')\n",
        "plt.ylabel('PSNR')\n",
        "plt.legend(bbox_to_anchor=(1.0, 1.0))\n",
        "plt.grid(True, which=\"both\", ls='-', alpha=.3)\n",
        "\n",
        "plt.savefig('axis-aligned.pdf', bbox_inches='tight', pad_inches=0)\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 576x288 with 1 Axes>"
            ],
            "image/png": "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0TM71uG9io0IyjRpmZCePL/zXXzTuDfRzRjRHn/88YxvvvnGctddd1UZjcYuz3buuOOOOovFQhO8+igcDjMAsFqtfXrP7rvvPmfs7xdccIGrr9tPmjQpPGXKlOBA25nMaAhKP2SZ07G/qRwhJQLOOdVQJaQLnrAPTUEXgjJdLSKkJ7Ii4//KNuOsrJMT3ZQ2zS/dXRCpOWhOdDva0+WM96f/+u6KgT7+xRdfdIiiyC+66KJue7lTU1PVk08+2df+tsbGRvGuu+7KTklJUWVZZvv37zf+6U9/qj755JODAPDFF1+YFyxYULh3717TkiVLah555JHqr7/+2nTNNdcU7d271/TYY4+V3XjjjU0A8Mwzz6Q3NDRIZrNZbWxslD766KPUl156qXTChAnhN99807Z9+3aTw+GQm5ubpQ0bNlhvuumm2gsuuMB74YUXFu/cudN89tlnu9asWdP2HjzyyCOOiooKvcFgUHfv3m2aM2eOe+HChU2x+y+//PKxn3zySeq4ceOCd9xxR83mzZtTIpEI27JlS8ratWvLi4qKBvzlvGvXLsOLL77onDdvXtN1113X3Nv2gUCAvf/++/Zbb721AQCuuOKKHgP47t279du3b2/7Hext+2MVBfB+KEzNxQelm+AKepGTkgGR0URMQjo71FIFAPDJAbQE3chOcUDs4ZIkIaNVhbcesqog1+xIdFNGtL1795rT0tLk9hMGu/L22293mIB59913Z7/yyiuOw4cPf2exWPizzz6bdt555008ePDgztTUVPXMM8/079mzZ3dGRsZJscf88Ic/DHS+7cCBA/p//etfaR999FHb/g8dOmRQVRV+v5+tWrUqd/v27W2XQW6++WZBURQGAO+++27JWWedNd7tdrcFju+++86wfPnysc8991zJb3/725bGxkZxypQpx1mtVuWaa65pBYDXXnut/Jprrin46KOP7Lt27TLec889tQAwb968wj/+8Y85L774YtuY7t58//335ttvvz1bURRs2rTJWlJSYnzhhRdKzj33XF93j2ltbZWuuOKKMaFQSOjL2Ppt27ZZrrjiijFut1v6/PPPbeedd15rX9t3rKIA3g9FqbkAgEpvLcan5UMUKIAT0lmpq6rt71XeBkxMHwuRRrsRcpTSVu1YSaYAPpie5mQlSRLnnPd6yTo9Pb3DrPGzzjrL09DQIBkMBg4AV1xxReuCBQuKt2zZYpozZ05b+DQajUfNNm9/W2Njo7h9+3bLyy+/nHrppZe6dDodrr/++oaMjAzF5/MJe/fuNT3xxBMZ1157bbPJZOJXX311syAIbScLGRkZHca95ubmynPnzm2eOHFiCAAcDocyY8YM74cffpgaC+DR16PU19frFi9e3Bi7raCgILxlyxZLb+9FeyeccII/FuAjkUjtZZddVrhgwYLCzZs373U6nV0OQbHb7fLLL798GAA8Ho9w3nnnje/pOaZNm+aNbb99+3bjvffem92fNh6L6H/FfmgL4J4Gqu5ASDdKXdUQmfbVUumpp7r5hHSj1FUFBiDblJ7opoxoEyZMCLS2toper/eoEH711VePOfPMMydMnjx56uTJk6eeccYZE7777jsDAFxyySXup556qvLZZ59Nv/HGG3MfeuihTAAIhUL9yk4zZ84MzJs3r+nKK68cb7FYTpkxY8akhoYGyeFwKE6nU7nllluqFi9ePNZqtZ58wgknTPnyyy9Tpk6d2u0EGofDobzzzjulLpdLWLp0ae5tt92WffjwYUNsXHZ7Tqcz0n7cuyAIaD8Jsr90Oh3uu+++6kOHDhlXrFjRp5BstVrVU045pdve8s5OOeWUYGZm5ogfv0gBvB/SjDZYJBOqvPU0tpWQbpS5a1CYmtvuWKFJy4R0pcxdA6c5DQZRn+imjGj/+7//26AoClu/fr2t830vvPDC4S+++OJAcXFxcN++faZPPvnkwIknnhgCgJdeeil16tSpx0UiEfbwww9X33333XUDef5QKMSeeOKJqgMHDnz30EMPlRcVFQWvuuqq8a+99lqqqqpYtmxZQ0VFxXdPPvlk2fTp071Lly4d+8ADDzi72191dbV0yimnTH7mmWecS5Ysqb/33ntrJ06cOGxl+rKzs2UA2Lp1a0pfH/Pkk09W9b7VwLc/FlEA76dcswNV3gaEqLoDIUfhnOOwuxb51kxkmzJQ6alHWKWTVUK6Uu6uRb41K9HNGPGuv/765lmzZrlXrFiR5/f7u+z91el0PPoTgBaa58+fX3zppZc2LV68uEmn0yESOfJdtmbNmrTY39sPFwG0BX+am5vbhvh+9NFHKU888UTGuHHjIgsXLmx67bXXyu+6666Kd999N/XgwYP62267LTcnJ0desGBB85o1aypWr15d8v7776d293qW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JP7aa68devvtt1MZY9iwYYP10UcfrZg+fXrb63n++eft27ZtM5vNZvXQoUPGKVOmBO6+++66gQ7J2L17t/4Pf/hDbkFBQdjj8YiqquLxxx+vtFgsvD/tampqEhctWpQnCALS0tLkQCAgXHbZZS0/+tGPfH15DwCgpaVFuPnmm3MFQUBGRoYcDodZQ0NDhwPszjvvzHr99dczDAYD//777/cAwKpVqzKfe+65zLq6Ot22bdt2rVmzJkOn0/ENGzZYb7vttpoLLrjAG3v8rl27DH/84x9ziouLQ3V1dbqsrKyIoihsy5YtKdddd13Db37zm9b+voeJ/gbIBJALoPM16UwAsctAPd1fNpSN601xtBJKtVcrr0YVXcloVOqqhsgEZJnTu11WO3asVPnqIXMFuoR/9RAy/Epd0XKd1ixINAEzKfzzn/+079692/zMM8+UpqWlqQDw4osv2letWpW7ZcuWvampqSoAPPXUU+lnnXXWhK+++mpfJBJhq1atyt2+ffve2H5uvvlmQVEUBgDvvvtuyVlnnTXe7XaLAJCTkyOvW7euLBa8161bV9a+Dc8991zlVVddJezbt69t0mBDQ4M4a9asyU899VT5hRde6AGA2tpacdq0aVNfe+21Q6effrr/8ccfr8rIyJAfffTRnLfeesv+wAMP1ADA0qVLheXLl+d/9tlnBwHA7XYLv/vd74pvv/32qhUrVtQFg0F20kknTWGMYcWKFf0e915RUSGdeeaZU55//vlDc+fO9QLa2PYFCxYUvPTSS4f72q5AIMDOOOOMiRdffHHLn//851oAOPXUUydu2rTJunPnzj19eQ+i+5h08cUXN8fG8IdCITZz5sxJkiS1DalZtWpVHWMMq1evzozdduedd9YXFBSEr7nmmnFPPvmk869//WuVKIr461//Glm4cOHYgwcP7optO3fu3AkLFy6sXbZsWaOiKMjNzT3xb3/7W9nPfvazVrvdPqDyXon+X/B7AB8CWBm7gTE2FtrCO48A+LKn+znn9cPa2k4cRjssOlN0EZIIjKBLimT0KXVVIyfFAYOkg8C67k1xmtKQojOi0hOrGmQY3kYSkgRKXdVI0Zlg1adATKLJYO0NZU9zMrjllltyLRaLoqoq83g8Qnp6urJjx45dEydODAOALMu46aabxsyfP78uFr4BYP78+c233nrrmCeeeMJx5ZVXtuzdu9f0xBNPZFx77bXNJpOJX3311c2CILQFvoyMjH6NJXc6nfK+ffva/r1ixYpsg8HAY8ETALKzs5U5c+a0Llq0qGDbtm37ACA9PV12uVzitdde2xTbbsyYMaE33ngjPfZvk8mkXnzxxU0nnnhiAACMRiM/55xzXB999JFtIAH8rrvuyklPT4/EwjcA/OIXv2i95JJLJrzwwguHRVHsU7see+wxx969e83Lly9ve+E33HBDfaxXvi/vwSOPPOLcvXu3edOmTW37MBgMfPr06d5vv/22wzBlp9N51GeSkZGhAMAFF1zgFkXtpLiwsDBcVlZmjG3T2NgolpeXG8aOHRsGAFEUkZ2dHV6/fn3q2rVrB3y8JDSAc845Y+wyALczxhYA4ACKASwE8Pfe7k9Uu2MkUUS+NQtVnnqEZRmUv8loVO6uwTh7PgxC9weAJIrIt2ShyluPkByBlY4VMgoddtdG50p0f7JKhtYdd9xRO2nSpHB393/zzTemuro6XUFBQYdtJEmCw+GIfPjhh7YlS5Y03nLLLVWLFy8eu3jx4rFTpkwJ3HDDDXW///3vm+PVzo8//jg1JyfnqHbm5eVFnn/+eYvL5RLanyC0f02CICDWGw9oVUFef/318i+++MJ888035zDG+M6dO82RSGRAv4QbN260KorCVq5c2dab7Pf7hRkzZnjcbrcQu5LQW7s++eQTm8PhiLTf/uqrr24bytGX9+DTTz+1Op3OiM1mG9TkogkTJoQ6tbPtPofDocyePdv1xRdfWC655BJ3XV2dWF5eblyxYkXVYJ4z0T3g4Jy7odX2HtD9iTbWloPPK7YhpHR7PBMyYvkiATQGWnFm/skwSD0Pwhpry8aXVd/SsUJGJc45DntqMTP3ROiTdPw3QVtA9Pl8R4XTYDAoRCIRpqoqli1b1jB//vzm9evX27766quUpUuXjvV4POLNN9/c0Nfn+uCDDyztxxl3agf8fv9RbYjdFg6H2dGP6prX62U//elPxwWDQbZ69eryyZMnh5cuXSps2LDB2td9tCcIAux2u/zHP/6x8yiE2v7sR1EUGAyGboNzX98Dk8k05DP7zzzzTI9Op+O33XZbdmtrq/j6668fOO+883yD2Sedgg9SUWoOgkoYdf5mqu5ARp2y6LLa+dbMXieVFdlzEZBDaPC3QlHpWCGjS72/BQE5hHyLs9eTVZI406ZNC9jtdrmioqLDdTqPxyM0NjbqZs+e7Tl48KD+tttuy83JyZEXLFjQvGbNmorVq1eXvP/++z0u6COKIudcG6WiKAo+/fTTbgPwzJkzPTU1NUddKywpKTFMmjQp4HQ6+zzu+J577snauHGj7b333js0efLktqE2MWvWrEnr9sFdmD17tvvQoUOmUCjU4STgo48+SgkGg30+MTjjjDO8NTU1hsbGxg4TIr788ktzJBLp03tw5plneurr63WBQKDPzzsQe/fuNf7hD3+ov/fee2v/9re/VQ02fAMUwAdtnL0AAFDpqadQQSi4gVAAACAASURBVEadQ9EKKHmWLIi9XFIvii5JX+Wth8JpSXoyuhwLFVBGsljwjf3sjslk4vfcc0/Fm2++me71ettC3ZNPPpkxfvz4wNKlSxs453j11Vczamtr24Kj0WjkJ598sr/983V+rqlTpwbLy8sNAPDtt98ajzvuuEB3269atapGVVW88847bSG9rKxMt3HjRtujjz56uPPrUtvlj877am1tFSVJ4jqdjgNaj/jXX39tCQaDzOv1spKSEn13be7KihUraiwWi/Lkk0+2FchoaGgQX3jhhQyj0cj72q5ly5Y1FBUVBe+88862xX88Ho/w/PPPp+t0uj69B0uWLGnMzc0NP/DAA87YNs3NzcJnn31ma2lpkXp6/vbtbH97V22vrKw0rF+/3nr48GGprq5ObD9EZaDoW2CQilK1lWarvHVU3YGMOmWuauhFHRxme7cVUGKKU6OVUDz1UFQFEKkXkIwepdGrRbmWrF6PFRI///nPf1Ieeuih7M2bN1sB4KKLLpowZcoU//r160u7e8zvf//75qysLPmaa64Z63A4ZJ/PJ5jNZnXjxo37LBYLF0WRz5w507Ny5crs1NRUhXMOv98v3H///TWKomDu3LnFGzdutAHAvHnzCmNVT5YtW9awZcuWlCuuuGJMenq68thjj1UBwK9//esxH374YZrH4xHPO++8cevWrSstKCiQv/766z2333577rvvvpsamzS6bt26A7Nnz/YDwI033pi7bt26DAA49dRTJ61cubLqo48+sr7yyiuO2tpa/ezZs8c/+OCDVX/6059qvV6veMkllxRNmzbNL8synn766cOXX3558Y033pj/hz/8oTa2r9jjHn744cr25QLby8rKUjZv3rxn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\n"
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "V1q0bu2dxOf2",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}